﻿using System;

namespace Framework.Domain.Interface.DomainObject.Bo
{
    public interface IBaseBo : IBaseObject
    {
        /// <summary>
        /// 获取数据的创建时间
        /// </summary>
        /// <returns>创建时间</returns>
        DateTime GetCreateTime();

        /// <summary>
        /// 获取数据的创建人KeyId
        /// </summary>
        /// <returns>创建人KeyId</returns>
        Guid GetCreateUserKeyId();

        /// <summary>
        /// 获取数据的修改时间
        /// </summary>
        /// <returns>修改时间</returns>
        DateTime GetUpdateTime();

        /// <summary>
        /// 获取数据的修改人KeyId
        /// </summary>
        /// <returns>修改人KeyId</returns>
        Guid GetUpdateUserKeyId();



        /// <summary>
        /// 获取数据是否已经逻辑删除
        /// </summary>
        /// <returns>是否已经逻辑删除</returns>
        bool GetIsDelete();

        /// <summary>
        ///设置数据是否已经逻辑删除 ysw_add
        /// </summary>
        /// <returns>是否已经逻辑删除</returns>
        bool SetIsDelete(bool isDelete = false);

        /// <summary>
        /// 获取版本信息
        /// </summary>
        /// <returns>版本信息</returns>
        int GetVersion();

        /// <summary>
        /// 设置版本信息
        /// </summary>
        /// <param name="version">版本信息</param>
        void SetVersion(int version);

    }
}
